package at.ac.tuwien.prog.command;

import at.ac.tuwien.prog.system.ISystem;

/**
 * 
 * Befehle (in Registern) bestehen aus 32 Bit und haben die Struktur oBA,
 * wobei o aus 4 Bit besteht und die Operation bestimmt und
 * B und A aus je 14 Bit bestehen und Registeradressen bzw. Konstanten beschreiben.
 * 
 * @author christoph.pickl@student.tuwien.ac.at
 */
public interface ICommand {

	/**
	 * assembler function name to interpret; eg: "setc", "setv", ...
	 */
	// public static final String NAME;
	
	/**
	 * simple getter.
	 * 
	 * @return operand A, 32bit integer; meaning depending of concrete ICommand subclass
	 */
	int getOperand1();

	/**
	 * simple getter.
	 * 
	 * @return operand B, 32bit integer; meaning depending of concrete ICommand subclass
	 */
	int getOperand2();
	
	
//	String getAssemblerName();
	
//	byte getBitName();
	
	/**
	 * execute the command on the given system.
	 */
	void execute(final ISystem system);
	
}
